package com.kerrykidz.scminvoicing.dao.mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.kerrykidz.scminvoicing.dao.model.GblScmPrdEntity;
import com.rdp.framework.core.dao.mapper.MyBatisSuperMapper;
import com.rdp.framework.exception.RDPException;

/**
 * 
* @ClassName: GblScmPrdEntityMapper 
* @description:商品信息Mapper
* @author: ScreenJxp 
* @date: 2014年8月21日 下午1:22:56 
* @version: V1.0
*
 */
@Repository
public interface GblScmPrdEntityMapper extends MyBatisSuperMapper<GblScmPrdEntity> {
		/**
		 * 
		*
		* @Title: findProductList
		* @Description: <p>查询商品信息<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月21日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public List<GblScmPrdEntity> findProductList(GblScmPrdEntity entity)throws  RDPException;
		/**
		 * 
		*
		* @Title: findProductList
		* @Description: <p>修改商品信息<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月21日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public void saveEntity(GblScmPrdEntity entity)throws RDPException;
		/***
		 * 
		*
		* @Title: deleteEntity
		* @Description: <p>修改商品<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月21日
		* @return: void
		* @throws 
		*
		 */
		public void updateEntity(GblScmPrdEntity entity)throws RDPException;
		/***
		 * 
		*
		* @Title: deleteEntity
		* @Description: <p>删除商品<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param map
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月21日
		* @return: void
		* @throws 
		*
		 */
		public  void deleteEntity(Map<String, Object> map)throws RDPException;
 
		
		/**
		* @Title:  团体预约获取 主食，附加菜单，装饰物列表  findParReserveTaocan  
		* @Description: <p> 团体预约获取 主食，附加菜单，装饰物列表<p>
		* @date: 2014年8月8日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		List<GblScmPrdEntity> findParReserveTaocan(GblScmPrdEntity parReserve);
		
		/**
		 * 
		*
		* @Title: getProductInfo
		* @Description: <p>根据查询条件查询商品信息<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param map
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月21日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public List<GblScmPrdEntity> getProductInfo(GblScmPrdEntity entity)throws RDPException;
		
		/**
		 * 
		*
		* @Title: getProductInfo
		* @Description: <p>根据查询条件查询商品信息<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param map
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月21日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public List<GblScmPrdEntity> getStgProductInfo(GblScmPrdEntity entity)throws RDPException;
		
		
		/**
		* @Title:  根据商品id 的list 获取团体预约获取 主食，附加菜单，装饰物列表  findScmRrdByprdIdList  
		* @Description: <p> 团体预约获取 主食，附加菜单，装饰物列表<p>
		* @date: 2014年8月8日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		List<GblScmPrdEntity> findScmRrdByprdIdList(Map<String,Object> map);
		/**
		 * 
		*
		* @Title: getProductListForCollection
		* @Description: <p>根据采购订单获取商品列表的信息<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param map
		* @param: <p>@return<p>
		* @date: 2014年8月12日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public List<GblScmPrdEntity> getProductListForCollection(HashMap<String, String> map)throws RDPException;
		/**
		* @Title:  根据商品id 的list 获取团体预约获取 主食，附加菜单，装饰物分页列表  findScmRrdByprdIdListPage  
		* @Description: <p> 团体预约获取 主食，附加菜单，装饰物列表<p>
		* @date: 2014年8月8日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		List<GblScmPrdEntity> findScmRrdByprdIdListPage(GblScmPrdEntity parReserve);
		
		
		public  List<GblScmPrdEntity> getProductById(Map<String, String> map)throws RDPException;
		
		/**
		 * 
		*
		* @Title: findAllProductInfo
		* @Description: <p>查询商品的具体信息，包括库存商品图片，分类等<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月17日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public List<GblScmPrdEntity> findAllProductInfo(GblScmPrdEntity entity)throws RDPException;
		
		/**
		 * 
		*
		* @Title: findProductListForStock
		* @Description: 提供仓储管理-库存查询所需数据
		* @param: @param entity
		* @param: @throws RDPException
		* @date: 2014年8月19日
		* @return: List<GblScmPrdEntity>
		* @throws 
		*
		 */
		public List<GblScmPrdEntity> findProductListForStock(GblScmPrdEntity entity) throws RDPException;
		
		/**
		 * 
		*
		* @Title: findProductById
		* @Description: <p>根据商品的Id和商品的类型查找<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月25日
		* @return: Map
		* @throws 
		*
		 */
		public GblScmPrdEntity   findProductById(GblScmPrdEntity entity)throws RDPException;
		
		/**
		 * 
		*
		* @Title: findSingleTicket
		* @Description: <p>查询单次票商品<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月26日
		* @return: GblScmPrdEntity
		* @throws 
		*
		 */
		public GblScmPrdEntity findSingleTicket(GblScmPrdEntity entity)throws RDPException;
		/**
		 * 
		*
		* @Title: findMemberProduct
		* @Description: <p>查询会籍商品p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月26日
		* @return: GblScmPrdEntity
		* @throws 
		*
		 */
		public GblScmPrdEntity findMemberProduct(GblScmPrdEntity entity)throws RDPException;
		/**
		 * 
		*
		* @Title: findParOrTeam
		* @Description: <p>查询派对或团体<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月26日
		* @return: GblScmPrdEntity
		* @throws 
		*
		 */
		public GblScmPrdEntity findParOrTeam(GblScmPrdEntity entity)throws RDPException;
		/**
		 * 
		*
		* @Title: findLessonsProduct
		* @Description: <p>查询课程类商品<p>
		* <pre>
			这里描述这个方法的使用方法 – 可选
		* </pre>
		* @param: <p>@param entity
		* @param: <p>@return
		* @param: <p>@throws RDPException<p>
		* @date: 2014年8月26日
		* @return: GblScmPrdEntity
		* @throws 
		*
		 */
		public GblScmPrdEntity findLessonsProduct(GblScmPrdEntity entity)throws RDPException;
		
		/**
		 * 根据会员查询单次票商品
		 * @return
		 */
		public List<GblScmPrdEntity> findSingleTicketByMemId(@Param("pkMemId") String pkMemId, @Param("resverseType") String resverseType);
		
		/**
		 * 查询所有课程类商品
		 * @return
		 */
		public List<GblScmPrdEntity> findAllLessonsProduct();
		/**
		 * 停用或删除商品时的check判断
		 * @param pkPrdId
		 * @return
		 * @throws RDPException
		 * @date: 2014年10月13日
		 */
		public List<String> canAbled(GblScmPrdEntity entity)throws RDPException;
		
	
}